package workflow;

import java.util.ArrayList;

import alumno.AlumnoEnCarrera;

public class Generador
{
  Workflow workflow;
  AlumnoEnCarrera alumno;
  GeneradorPermiso permiso = new GDeshabilitado();
  ArrayList<Tema> temas;
  TPEnGeneracion tp;
  
  public void conocer(TPEnGeneracion tp){ //es un setter de TPEnGeneracion
    this.tp = tp;
  }

  public TPEnGeneracion getTp()
  {
    return tp;
  }

  public void setTp(TPEnGeneracion tp)
  {
    this.tp = tp;
  }

  public Generador(Workflow workflow, AlumnoEnCarrera unAlumno){
    this.workflow = workflow;
    alumno = unAlumno;
    temas = new ArrayList<Tema>();
  }
  
  
  public void agregarTema(Tema unTema){
    temas.add(unTema);
  }
  
  public Workflow getWorkflow()
  {
    return workflow;
  }

  public void setWorkflow(Workflow workflow)
  {
    this.workflow = workflow;
  }

  public AlumnoEnCarrera getAlumno()
  {
    return alumno;
  }

  public void setAlumno(AlumnoEnCarrera unAlumno)
  {
    this.alumno = unAlumno;
  }

  public ArrayList<Tema> getTemas()
  {
    return temas;
  }

  public void setTemas(ArrayList<Tema> temas)
  {
    this.temas = temas;
  }

  /*public void cambiarPermiso(GeneradorPermiso permiso)
  {
    this.permiso = permiso;
  }*/
  
  public void deshabilitar(){
    permiso = new GDeshabilitado();
  }

  public void habilitarGeneracion(){
    permiso = new GEnGeneracion(this);
  }
  
  public void habilitarCorreccion(){
    permiso = new GEnCorreccion(this);
  }
  
  public void recibirTema(Tema tema){
    permiso.recibirTema(tema);
  }
  
  public ArrayList<Tema> obtenerTemas(){
    return permiso.obtenerTemas();
  }

  public ArrayList<Parrafo> obtenerParrafos(String titulo){
    return permiso.obtenerParrafos(titulo);
  }
  
  public ArrayList<Ejercicio> obtenerEjercicios(String titulo){
    return permiso.obtenerEjercicios(titulo);
  }
  
  public void agregarParrafo(String titulo, String contenido)
  {
    permiso.agregarParrafo(titulo,contenido);
  }
  
  public void agregarEjercicio(String titulo, String contenido)
  {
    permiso.agregarEjercicio(titulo,contenido);
  }
  
  public void enviarTemas(){
    permiso.enviarTemas();
  }
  
  public void modificarParrafo(Parrafo unParrafo, String contenido){
    permiso.modificarParrafo(unParrafo,contenido);
  }
  
  public void modificarEjercicio(Ejercicio unEjercicio, String contenido){
    permiso.modificarEjercicio(unEjercicio,contenido);
  }
  
  public void generarRegistro(){
    permiso.generarRegistro();
  }


}
